/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package repol190.geradoreventos;

import java.util.Collection;
import repol190.ocorrencia.CadastroEndereco;
import repol190.ocorrencia.CadastroOcorrencia;
import repol190.ocorrencia.Endereco;
import repol190.ocorrencia.EnderecoInexistenteException;
import repol190.ocorrencia.EnderecoJaExistenteException;
import repol190.ocorrencia.Ocorrencia;
import repol190.ocorrencia.OcorrenciaInexistenteException;
import repol190.ocorrencia.OcorrenciaJaExistenteException;
import repol190.ocorrencia.RepositorioEndereco;
import repol190.ocorrencia.RepositorioEnderecoDataBase;
import repol190.ocorrencia.RepositorioOcorrenciaDataBase;
import repol190.ocorrencia.RepositorioOcorrencias;
import repol190.viatura.CadastroViatura;
import repol190.viatura.RepositorioViatura;
import repol190.viatura.RepositorioViaturaDataBase;
import repol190.viatura.Viatura;
import repol190.viatura.ViaturaInexistenteException;
import repol190.viatura.ViaturaJaExistenteException;

/**
 *
 * @author micael
 */
public class GeradorEventos {
    private CadastroOcorrencia ocorrencias;
    private CadastroViatura viaturas;
    private CadastroEndereco enderecos;
    private RepositorioEndereco repEndereco;
    private RepositorioOcorrencias repOcorrencia; 
    private RepositorioViatura repViatura;

    public GeradorEventos() {
        
        //inicializando repositorios
        this.repEndereco = new RepositorioEnderecoDataBase();
        this.repOcorrencia = new RepositorioOcorrenciaDataBase();
        this.repViatura = new RepositorioViaturaDataBase();
        
        //inicializando cadastros
        this.enderecos = new CadastroEndereco(repEndereco);
        this.ocorrencias = new CadastroOcorrencia(repOcorrencia);
        this.viaturas = new CadastroViatura(repViatura);
        
    }
    
    /*
     Ocorrências
     */
    public void inserirOcorrencia(Ocorrencia nova) throws OcorrenciaJaExistenteException{
        ocorrencias.inserirOcorrencia(nova);
    }
    
    public void excluirOcorrencia(Ocorrencia paraExcluir) throws OcorrenciaInexistenteException{
       ocorrencias.excluirOcorrencia(paraExcluir);
    }
    
    public void atualizarOcorrencia(Ocorrencia paraAtualizar) throws OcorrenciaInexistenteException{
        ocorrencias.atualizarOcorrencia(paraAtualizar);
    }
    
    public Collection listarOcorrencias(){
        return ocorrencias.listarOcorrencias();
    }
    
    
    /*
     Viaturas
     */
    public void inserirViatura(Viatura nova) throws ViaturaJaExistenteException{
        viaturas.inserirViatura(nova);
    }
    
    public void excluirViatura(Viatura paraExcluir) throws ViaturaInexistenteException{
        viaturas.excluirViatura(paraExcluir);
    }

    
    public void atualizarViatura(Viatura paraAtualizar) throws ViaturaInexistenteException{
        viaturas.atualizarViatura(paraAtualizar);
    }
    
    public Collection listarViaturas(){
        return viaturas.listarViaturas();
    }
    
    
    /*
     Endereço
     */
    public void inserirEndereco(Endereco novo) throws EnderecoJaExistenteException{
        enderecos.inserirEndereco(novo);
    }
    
    public void excluirEndereco(Endereco paraExcluir) throws EnderecoInexistenteException{
        enderecos.excluirEndereco(paraExcluir);
    }
    
    public void atualizarEndereco(Endereco paraAtualizar) throws EnderecoInexistenteException{
        enderecos.atualizarEndereco(paraAtualizar);
    }
   
    public Collection listarEnderecos(){
       return enderecos.listarEnderecos();
    }
}
